﻿namespace WpfGenetic.Fitness
{
    public static class FrequencyOfBigrams
    {
        private static readonly List<double[]> myBigrams = new()
        {
            new double[] {  2.22,   3.66,   4.31,   3.73,   4.13,   3.98,   0.00,   3.89,   4.37,   2.88,   3.74,   4.46,   4.75,   4.34,   4.43,   2.12,   3.82,   4.33,   4.41,   4.49,   2.89,   3.30,   3.83,   2.65,   3.75,   3.91,   3.28,   0.00,   0.00,   0.00,   1.66,   3.78,   4.16,   4.97,   },
            new double[] {  3.80,   2.59,   2.72,   1.74,   2.05,   4.14,   0.00,   1.73,   1.60,   3.74,   0.00,   3.07,   3.76,   2.41,   3.30,   4.12,   0.00,   3.92,   2.84,   1.65,   3.83,   0.00,   2.61,   2.04,   2.23,   1.54,   2.98,   2.85,   4.34,   2.56,   0.00,   1.40,   3.54,   3.29,   },
            new double[] {  4.57,   1.85,   2.50,   2.20,   3.24,   4.48,   0.60,   0.30,   3.52,   4.30,   0.00,   3.11,   3.71,   2.95,   3.86,   4.67,   3.10,   3.56,   4.22,   3.12,   3.70,   0.00,   2.39,   2.31,   2.47,   3.74,   1.57,   1.73,   4.22,   3.17,   0.30,   0.78,   3.21,   4.58,   },
            new double[] {  3.86,   0.30,   2.40,   2.27,   3.85,   3.45,   0.00,   0.00,   0.48,   3.72,   0.00,   2.79,   4.01,   1.68,   3.30,   4.75,   0.00,   3.83,   2.48,   1.98,   3.65,   0.78,   0.30,   0.78,   2.27,   1.52,   0.00,   0.00,   0.30,   0.30,   0.00,   0.70,   0.00,   3.56,   },
            new double[] {  4.45,   2.45,   3.76,   1.81,   2.56,   4.48,   0.60,   2.54,   2.13,   4.24,   0.00,   3.23,   3.65,   2.69,   4.08,   4.38,   2.78,   3.99,   3.31,   3.01,   4.07,   1.36,   2.47,   3.10,   2.43,   2.82,   0.30,   2.79,   3.63,   3.59,   0.78,   2.52,   3.50,   3.85,   },
            new double[] {  2.47,   3.95,   4.08,   4.35,   4.29,   4.03,   0.85,   3.78,   3.94,   3.02,   4.24,   3.89,   4.60,   4.41,   4.69,   3.38,   3.82,   4.66,   4.46,   4.54,   2.80,   2.20,   3.70,   3.45,   3.88,   3.78,   3.62,   0.00,   0.00,   0.00,   0.00,   3.28,   3.34,   4.97,   },
            new double[] {  0.00,   0.00,   0.78,   0.60,   0.48,   0.00,   0.00,   0.30,   0.60,   0.00,   0.00,   0.00,   0.70,   0.30,   0.78,   0.00,   0.00,   1.26,   0.00,   0.70,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   3.21,   },
            new double[] {  3.96,   2.51,   0.48,   2.06,   3.70,   4.39,   0.30,   2.24,   0.00,   3.98,   0.00,   2.90,   1.74,   1.63,   3.82,   3.22,   0.00,   2.10,   2.20,   1.15,   3.16,   0.00,   0.00,   0.00,   2.61,   0.00,   0.00,   0.00,   0.00,   2.53,   0.00,   0.00,   0.00,   3.16,   },
            new double[] {  4.54,   3.05,   3.74,   3.36,   3.90,   3.40,   0.00,   2.93,   2.08,   3.42,   0.00,   3.00,   3.22,   3.24,   4.02,   3.65,   0.00,   3.17,   2.87,   2.06,   3.36,   0.00,   0.00,   1.15,   2.11,   1.84,   0.00,   2.04,   3.52,   3.45,   0.00,   2.37,   3.46,   3.94,   },
            new double[] {  2.75,   3.45,   4.17,   3.55,   4.00,   4.17,   0.00,   3.34,   4.20,   3.62,   3.94,   4.16,   4.52,   4.26,   4.37,   3.24,   3.13,   3.84,   4.28,   4.42,   1.79,   2.57,   4.06,   3.85,   3.89,   3.59,   3.08,   0.00,   0.00,   0.00,   1.66,   3.29,   3.95,   5.00,   },
            new double[] {  0.70,   1.04,   2.34,   1.80,   3.16,   2.73,   0.00,   0.00,   0.90,   0.00,   0.00,   2.83,   2.66,   2.90,   3.40,   2.08,   0.78,   1.87,   3.60,   3.36,   0.00,   1.08,   1.62,   2.66,   2.76,   2.79,   1.18,   0.00,   0.00,   0.00,   0.00,   0.48,   1.08,   4.60,   },
            new double[] {  4.70,   0.48,   3.23,   0.95,   1.74,   3.60,   0.48,   2.22,   1.96,   4.28,   0.00,   2.08,   3.53,   1.66,   3.76,   4.73,   0.00,   4.05,   3.03,   3.51,   4.02,   0.30,   2.08,   2.20,   1.79,   1.89,   0.00,   0.00,   0.00,   0.30,   0.00,   1.26,   0.00,   4.41,   },
            new double[] {  4.66,   2.45,   2.37,   3.00,   3.06,   4.48,   0.95,   3.34,   2.02,   4.64,   0.00,   3.55,   3.28,   2.16,   3.29,   4.62,   2.83,   0.00,   3.97,   2.72,   3.96,   1.48,   1.64,   0.85,   3.12,   1.91,   1.32,   0.00,   3.82,   4.40,   1.61,   3.84,   4.08,   4.60,   },
            new double[] {  4.23,   2.37,   1.45,   2.40,   0.70,   4.42,   0.00,   0.00,   1.73,   4.32,   0.00,   2.93,   3.05,   2.54,   3.94,   4.36,   2.99,   2.67,   2.92,   1.89,   4.15,   1.72,   1.08,   2.12,   2.34,   1.46,   1.82,   0.00,   3.71,   2.66,   1.08,   1.56,   3.46,   4.56,   },
            new double[] {  4.83,   1.81,   2.04,   2.79,   3.65,   4.77,   0.60,   2.37,   2.41,   4.68,   0.00,   3.29,   2.07,   1.20,   4.23,   4.76,   1.34,   2.69,   3.55,   3.55,   4.21,   2.31,   2.03,   3.57,   3.13,   2.00,   2.98,   1.23,   4.37,   3.89,   0.48,   3.11,   4.16,   4.36,   },
            new double[] {  1.79,   4.34,   4.70,   4.50,   4.51,   4.16,   0.00,   4.10,   3.88,   3.77,   4.40,   4.22,   4.66,   4.53,   4.59,   3.09,   3.91,   4.65,   4.63,   4.60,   2.75,   3.16,   3.58,   2.73,   4.03,   3.85,   3.11,   0.00,   0.00,   0.00,   2.37,   3.60,   3.64,   5.04,   },
            new double[] {  3.95,   0.30,   0.00,   0.95,   0.00,   4.15,   0.00,   0.00,   0.00,   3.83,   0.00,   2.81,   3.76,   0.00,   2.82,   4.75,   2.39,   4.58,   2.12,   2.91,   3.68,   1.11,   0.48,   2.20,   2.60,   1.58,   1.04,   0.00,   3.26,   2.89,   0.30,   1.71,   3.31,   2.33,   },
            new double[] {  4.73,   2.96,   3.36,   3.27,   3.63,   4.59,   0.48,   3.31,   2.62,   4.54,   0.00,   3.39,   3.01,   3.34,   3.76,   4.70,   2.79,   2.89,   3.33,   3.70,   4.27,   2.51,   3.00,   2.72,   2.83,   3.16,   2.51,   0.00,   4.02,   3.76,   1.32,   3.09,   3.84,   3.77,   },
            new double[] {  4.03,   2.55,   4.05,   2.24,   3.22,   4.32,   3.29,   2.27,   2.06,   4.02,   0.00,   4.44,   4.26,   3.74,   3.84,   4.21,   4.03,   3.22,   3.71,   4.89,   3.71,   1.90,   3.06,   2.48,   3.32,   2.69,   0.90,   2.36,   3.49,   4.27,   1.41,   3.00,   4.39,   4.26,   },
            new double[] {  4.57,   2.24,   4.19,   1.64,   2.94,   4.53,   1.08,   0.70,   1.52,   4.36,   0.00,   3.54,   3.19,   2.31,   3.82,   4.93,   2.81,   4.40,   3.89,   2.89,   3.96,   1.73,   1.99,   2.96,   2.96,   1.68,   1.88,   2.26,   4.01,   4.58,   1.75,   2.60,   3.57,   4.47,   },
            new double[] {  2.12,   3.72,   3.66,   3.88,   4.08,   3.20,   0.48,   3.97,   3.62,   2.10,   2.89,   3.77,   3.99,   3.85,   3.31,   1.86,   3.69,   3.66,   3.94,   3.99,   1.81,   2.00,   3.46,   1.83,   3.75,   3.68,   3.22,   0.00,   0.00,   0.00,   2.08,   3.81,   2.66,   4.46,   },
            new double[] {  2.94,   0.00,   0.00,   0.30,   0.00,   2.97,   0.00,   0.00,   0.00,   3.37,   0.00,   1.08,   2.54,   1.48,   0.95,   2.88,   0.00,   3.33,   1.81,   1.96,   2.77,   2.54,   0.00,   0.00,   0.30,   0.00,   0.00,   0.00,   2.03,   1.38,   0.90,   0.95,   1.04,   2.65,   },
            new double[] {  3.71,   0.00,   3.07,   1.62,   0.48,   2.65,   0.00,   0.00,   0.00,   3.19,   0.00,   0.60,   2.98,   2.67,   3.10,   4.15,   0.78,   2.92,   2.44,   2.28,   2.98,   0.00,   1.08,   0.00,   0.70,   1.83,   0.00,   1.18,   0.00,   0.30,   1.00,   0.00,   0.00,   4.25,   },
            new double[] {  3.73,   0.00,   2.48,   1.38,   0.00,   3.77,   0.00,   0.00,   0.00,   3.19,   0.00,   2.73,   0.90,   1.04,   0.78,   3.35,   0.00,   0.00,   0.00,   0.00,   3.41,   0.48,   0.00,   0.90,   0.00,   0.00,   0.00,   0.00,   3.18,   0.00,   0.00,   0.48,   0.90,   3.22,   },
            new double[] {  4.13,   0.00,   1.54,   0.00,   0.00,   4.34,   0.00,   0.00,   0.00,   4.06,   0.00,   3.39,   2.30,   1.74,   3.62,   2.86,   0.00,   2.05,   0.00,   4.29,   3.62,   0.00,   0.60,   0.00,   0.30,   2.93,   0.00,   0.00,   0.00,   3.28,   0.00,   0.00,   0.00,   3.06,   },
            new double[] {  3.93,   0.00,   2.09,   0.00,   0.00,   4.16,   0.00,   0.00,   0.00,   4.04,   0.00,   3.54,   3.51,   2.01,   3.39,   3.28,   2.25,   1.60,   0.30,   2.82,   3.36,   0.00,   0.00,   1.15,   0.90,   1.38,   0.00,   0.00,   0.00,   3.60,   0.95,   0.85,   0.00,   2.75,   },
            new double[] {  3.43,   0.00,   0.30,   0.00,   0.00,   3.93,   0.30,   0.00,   0.00,   3.73,   0.00,   0.00,   0.00,   0.00,   2.39,   1.54,   0.00,   1.28,   0.00,   0.00,   2.89,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   2.13,   0.00,   0.00,   0.00,   2.07,   },
            new double[] {  0.00,   0.00,   0.00,   0.00,   0.00,   3.00,   0.30,   0.00,   0.00,   0.30,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   2.52,   2.79,   0.48,   },
            new double[] {  0.00,   3.35,   3.79,   2.79,   2.89,   3.88,   0.00,   2.46,   2.66,   2.06,   4.05,   3.19,   4.11,   3.94,   3.32,   0.00,   3.08,   3.32,   3.67,   3.62,   1.54,   0.00,   3.84,   2.63,   3.12,   3.54,   1.83,   0.00,   0.00,   0.00,   0.00,   0.00,   1.41,   4.38,   },
            new double[] {  0.00,   2.81,   2.32,   2.60,   2.60,   3.77,   0.30,   0.00,   2.97,   2.91,   0.00,   3.86,   0.00,   3.36,   3.82,   2.22,   1.26,   0.30,   3.76,   3.03,   0.00,   2.00,   1.00,   2.89,   2.89,   3.51,   1.94,   0.00,   0.00,   0.00,   0.30,   3.45,   3.56,   4.68,   },
            new double[] {  0.00,   0.60,   0.30,   1.56,   1.04,   0.00,   0.00,   0.00,   1.38,   0.00,   1.76,   2.48,   2.30,   2.59,   2.21,   0.00,   1.74,   2.18,   2.12,   4.08,   0.00,   1.38,   1.43,   0.00,   0.00,   0.30,   0.00,   0.00,   0.00,   0.00,   1.23,   0.00,   0.00,   1.41,   },
            new double[] {  1.56,   3.45,   1.91,   2.15,   3.43,   1.53,   0.00,   2.28,   2.13,   0.48,   1.43,   2.27,   2.34,   2.44,   2.67,   0.00,   1.28,   2.52,   2.98,   3.56,   0.00,   1.11,   2.35,   1.88,   2.74,   2.72,   3.42,   0.00,   0.00,   0.00,   0.00,   2.35,   0.00,   4.16,   },
            new double[] {  0.00,   2.49,   3.24,   2.99,   3.63,   2.96,   0.00,   3.32,   3.63,   2.22,   2.58,   3.07,   3.77,   3.40,   3.64,   0.00,   2.33,   2.64,   3.59,   3.98,   1.43,   0.00,   3.12,   2.47,   3.05,   2.19,   3.17,   0.00,   0.00,   0.00,   0.00,   2.90,   2.88,   4.72,   },
            new double[] {  3.92,   4.62,   4.97,   4.49,   4.64,   4.41,   0.30,   4.12,   4.46,   4.85,   0.48,   4.75,   4.27,   4.57,   4.97,   4.82,   4.98,   4.38,   5.02,   4.66,   4.41,   3.55,   3.91,   3.39,   4.50,   3.74,   2.85,   0.00,   0.00,   0.00,   4.10,   2.63,   3.93,   0.00,   },
        };

        private static readonly List<double[]> dostoevskyBigrams = new()
        {
            new double[] {  0.48,   2.75,   3.46,   2.86,   3.29,   3.14,   0.00,   3.24,   3.58,   2.11,   2.98,   3.77,   3.87,   3.55,   3.58,   1.11,   2.93,   3.29,   3.70,   3.67,   1.91,   1.64,   2.96,   1.76,   3.01,   2.97,   2.44,   0.00,   0.00,   0.00,   0.70,   2.98,   3.33,   4.13,   },
            new double[] {  2.80,   0.00,   1.71,   0.00,   1.36,   3.36,   0.00,   0.60,   0.00,   2.95,   0.00,   2.14,   2.90,   1.64,   2.46,   3.32,   0.00,   3.11,   2.35,   0.60,   3.15,   0.00,   1.74,   0.00,   1.30,   1.04,   2.42,   2.16,   3.59,   1.72,   0.00,   0.85,   2.81,   2.63,   },
            new double[] {  3.80,   0.30,   1.36,   1.28,   2.91,   3.74,   0.00,   0.00,   2.75,   3.53,   0.00,   2.10,   2.84,   2.06,   3.23,   3.82,   2.54,   2.77,   3.58,   2.38,   2.85,   0.00,   1.78,   1.36,   2.27,   2.85,   1.15,   0.60,   3.44,   2.20,   0.00,   0.00,   2.32,   3.74,   },
            new double[] {  3.05,   0.00,   0.85,   0.30,   3.06,   2.51,   0.00,   0.00,   0.30,   2.83,   0.00,   1.73,   3.14,   1.08,   2.48,   3.93,   0.00,   2.77,   1.64,   0.85,   2.68,   0.00,   0.00,   0.00,   1.56,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   2.94,   },
            new double[] {  3.69,   1.45,   2.96,   1.15,   1.61,   3.67,   0.30,   1.30,   1.08,   3.40,   0.00,   2.38,   2.81,   1.68,   3.29,   3.59,   1.94,   3.30,   2.52,   2.45,   3.27,   0.00,   1.66,   2.44,   1.77,   1.91,   0.30,   0.30,   2.69,   3.05,   0.00,   0.95,   2.66,   2.90,   },
            new double[] {  1.51,   3.15,   3.17,   3.55,   3.49,   3.27,   0.00,   2.95,   3.11,   2.14,   3.39,   3.11,   3.79,   3.67,   3.88,   2.49,   3.10,   3.82,   3.70,   3.78,   2.23,   1.30,   2.70,   2.55,   3.12,   3.04,   2.99,   0.00,   0.00,   0.00,   0.00,   2.39,   2.39,   4.19,   },
            new double[] {  0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.30,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   2.94,   },
            new double[] {  3.12,   1.38,   0.00,   0.60,   2.92,   3.68,   0.00,   1.04,   0.00,   3.16,   0.00,   2.03,   1.26,   0.60,   2.89,   1.32,   0.00,   0.60,   1.04,   0.00,   2.51,   0.00,   0.00,   0.00,   1.00,   0.00,   0.00,   0.00,   0.00,   1.75,   0.00,   0.00,   0.00,   2.76,   },
            new double[] {  3.66,   2.13,   2.99,   2.58,   2.87,   2.37,   0.00,   1.69,   1.04,   2.62,   0.00,   2.10,   2.43,   2.43,   3.28,   2.67,   0.00,   2.45,   1.28,   0.90,   2.81,   0.00,   0.00,   0.30,   1.32,   0.85,   0.00,   1.64,   2.52,   2.02,   0.00,   0.30,   2.65,   3.08,   },
            new double[] {  2.06,   2.84,   3.37,   2.78,   3.27,   3.32,   0.00,   2.41,   3.28,   2.82,   3.10,   3.43,   3.71,   3.45,   3.52,   2.46,   2.39,   2.98,   3.36,   3.66,   0.95,   1.20,   3.30,   2.96,   3.26,   2.80,   2.20,   0.00,   0.00,   0.00,   0.00,   2.60,   3.18,   4.19,   },
            new double[] {  0.00,   0.00,   0.00,   0.00,   2.44,   0.00,   0.00,   0.00,   0.30,   0.00,   0.00,   2.11,   2.37,   1.63,   2.58,   0.78,   0.00,   0.00,   2.72,   2.57,   0.00,   0.00,   0.00,   1.63,   2.26,   2.32,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   3.72,   },
            new double[] {  3.84,   0.30,   2.40,   0.00,   0.30,   2.64,   0.00,   1.48,   1.00,   3.39,   0.00,   1.11,   2.74,   0.48,   2.75,   3.98,   0.00,   3.19,   2.32,   2.72,   3.09,   0.00,   1.43,   1.26,   0.00,   1.08,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   3.63,   },
            new double[] {  3.76,   1.43,   1.18,   2.14,   1.36,   3.63,   0.00,   2.50,   0.70,   3.77,   0.00,   2.46,   1.84,   1.20,   2.44,   3.77,   1.76,   0.00,   3.16,   2.03,   3.16,   0.30,   0.00,   0.00,   2.34,   0.00,   0.00,   0.00,   2.80,   3.72,   0.00,   2.94,   3.18,   3.71,   },
            new double[] {  3.48,   1.26,   0.30,   1.88,   0.00,   3.63,   0.00,   0.00,   0.00,   3.46,   0.00,   1.93,   1.98,   1.49,   3.20,   3.59,   1.70,   1.82,   2.02,   1.46,   3.37,   1.04,   0.00,   1.04,   1.73,   0.78,   0.00,   0.00,   2.94,   1.94,   0.00,   0.30,   2.60,   3.78,   },
            new double[] {  4.03,   1.00,   1.18,   1.72,   2.49,   4.02,   0.00,   0.70,   1.15,   3.94,   0.00,   2.44,   0.00,   0.00,   3.46,   4.02,   0.00,   2.00,   2.52,   2.67,   3.40,   1.56,   0.60,   2.39,   2.32,   1.08,   2.04,   0.00,   3.49,   3.10,   0.00,   2.34,   3.27,   3.54,   },
            new double[] {  0.90,   3.58,   3.95,   3.67,   3.73,   3.32,   0.00,   3.36,   3.02,   2.85,   3.52,   3.25,   3.81,   3.76,   3.77,   2.37,   3.17,   3.74,   3.81,   3.84,   1.98,   2.28,   2.70,   2.17,   3.37,   3.02,   2.40,   0.00,   0.00,   0.00,   0.85,   2.79,   2.86,   4.32,   },
            new double[] {  2.91,   0.00,   0.00,   0.00,   0.00,   3.39,   0.00,   0.00,   0.00,   2.96,   0.00,   1.90,   2.89,   0.00,   2.04,   3.96,   1.48,   3.85,   1.75,   1.88,   2.84,   0.00,   0.00,   0.95,   1.34,   0.60,   0.00,   0.00,   2.39,   2.21,   0.00,   0.00,   2.76,   1.20,   },
            new double[] {  3.85,   2.27,   2.62,   2.39,   2.51,   3.77,   0.00,   2.47,   1.74,   3.75,   0.00,   2.33,   1.84,   2.56,   2.89,   3.88,   2.05,   0.95,   2.18,   2.83,   3.45,   2.47,   1.85,   1.28,   1.88,   2.38,   1.15,   0.00,   2.98,   3.01,   0.00,   2.32,   3.03,   2.65,   },
            new double[] {  3.26,   1.99,   3.12,   1.46,   2.32,   3.54,   2.98,   1.40,   0.95,   3.18,   0.00,   3.64,   3.46,   3.06,   2.97,   3.40,   3.27,   2.22,   2.90,   4.05,   2.89,   0.78,   2.30,   1.75,   2.61,   1.90,   0.00,   1.15,   2.34,   3.50,   0.00,   2.41,   3.59,   3.48,   },
            new double[] {  3.78,   0.95,   3.41,   1.00,   2.02,   3.81,   0.00,   0.00,   1.32,   3.58,   0.00,   2.58,   2.38,   1.57,   3.09,   4.20,   1.85,   3.52,   3.08,   1.90,   3.26,   0.30,   1.20,   1.81,   2.54,   1.00,   1.48,   1.11,   3.14,   3.84,   1.00,   1.95,   2.64,   3.60,   },
            new double[] {  1.90,   2.91,   2.83,   3.20,   3.31,   2.33,   0.00,   3.27,   2.39,   0.85,   2.35,   2.83,   3.19,   3.21,   2.74,   0.60,   2.92,   2.78,   3.03,   3.20,   0.00,   1.18,   2.64,   0.85,   2.94,   2.79,   2.55,   0.00,   0.00,   0.00,   0.00,   2.94,   1.80,   3.68,   },
            new double[] {  2.36,   0.00,   0.00,   0.00,   0.00,   1.76,   0.00,   0.00,   0.00,   2.53,   0.00,   0.00,   1.04,   0.60,   0.00,   2.02,   0.00,   2.03,   0.90,   1.08,   1.93,   0.95,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   1.34,   2.03,   0.00,   0.00,   0.00,   0.78,   },
            new double[] {  2.65,   0.00,   2.29,   0.00,   0.00,   2.48,   0.00,   0.00,   0.90,   2.74,   0.00,   0.00,   2.15,   1.82,   2.18,   3.37,   0.00,   1.88,   1.48,   1.00,   2.21,   0.00,   0.00,   0.00,   0.60,   1.20,   0.00,   0.00,   0.00,   0.00,   0.30,   0.00,   0.00,   3.41,   },
            new double[] {  2.74,   0.00,   1.41,   0.00,   0.00,   2.92,   0.00,   0.00,   0.00,   2.45,   0.00,   1.40,   0.00,   0.48,   0.00,   2.31,   0.00,   0.00,   0.00,   0.85,   2.31,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   2.26,   0.00,   0.00,   0.00,   0.00,   2.30,   },
            new double[] {  3.43,   0.00,   0.00,   0.00,   0.00,   3.63,   0.00,   0.00,   0.00,   3.24,   0.00,   2.72,   1.30,   0.85,   2.98,   1.92,   0.00,   1.93,   0.00,   3.61,   2.85,   0.00,   0.00,   0.00,   0.00,   2.16,   0.00,   0.00,   0.00,   2.41,   0.00,   0.00,   0.00,   2.29,   },
            new double[] {  2.97,   0.00,   0.85,   0.00,   0.00,   3.36,   0.00,   0.00,   0.00,   3.17,   0.00,   2.67,   2.74,   1.11,   2.64,   2.27,   0.00,   0.00,   0.00,   1.75,   2.32,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   2.81,   0.00,   0.00,   0.00,   1.69,   },
            new double[] {  2.62,   0.00,   0.00,   0.00,   0.00,   3.22,   0.00,   0.00,   0.00,   2.83,   0.00,   0.00,   0.00,   0.00,   1.72,   0.30,   0.00,   0.48,   0.00,   0.00,   2.25,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   1.57,   0.00,   0.00,   0.00,   0.48,   },
            new double[] {  0.00,   0.00,   0.00,   0.00,   0.00,   1.63,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   2.26,   0.00,   },
            new double[] {  0.00,   2.18,   2.95,   2.05,   2.21,   2.93,   0.00,   1.36,   1.82,   0.78,   3.14,   2.25,   3.30,   3.02,   2.26,   0.00,   2.03,   2.34,   2.85,   2.89,   0.30,   0.00,   3.00,   0.00,   2.25,   2.71,   1.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.48,   3.56,   },
            new double[] {  0.00,   2.11,   1.45,   2.15,   1.32,   2.64,   0.00,   0.00,   2.21,   2.09,   0.00,   3.13,   0.00,   2.58,   3.39,   0.60,   0.00,   0.00,   2.95,   2.27,   0.00,   1.11,   2.10,   1.85,   1.76,   2.50,   1.45,   0.00,   0.00,   0.00,   0.00,   2.57,   2.70,   3.90,   },
            new double[] {  0.00,   0.00,   0.60,   1.00,   0.78,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   1.65,   1.11,   0.70,   1.38,   0.00,   1.34,   0.00,   0.78,   3.41,   0.00,   0.90,   1.15,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   },
            new double[] {  0.00,   2.52,   0.48,   0.30,   2.56,   0.00,   0.00,   1.18,   0.95,   0.70,   0.00,   1.20,   1.08,   1.67,   1.48,   0.00,   0.00,   1.75,   2.28,   2.58,   0.00,   0.00,   0.90,   1.54,   2.02,   1.82,   2.44,   0.00,   0.00,   0.00,   0.00,   1.62,   0.00,   3.32,   },
            new double[] {  0.00,   1.30,   2.50,   1.82,   2.74,   2.09,   0.00,   2.03,   2.36,   1.30,   1.97,   2.27,   2.93,   2.60,   2.81,   0.00,   1.72,   1.96,   2.82,   3.22,   0.00,   0.00,   2.31,   1.87,   2.21,   1.04,   2.19,   0.00,   0.00,   0.00,   0.00,   2.10,   1.97,   3.92,   },
            new double[] {  3.17,   3.85,   4.22,   3.51,   3.87,   3.62,   0.00,   3.39,   3.62,   4.08,   0.30,   3.89,   3.36,   3.75,   4.18,   4.04,   4.19,   3.58,   4.19,   3.94,   3.67,   2.56,   3.17,   2.49,   3.79,   2.76,   1.83,   0.00,   0.00,   0.00,   3.43,   1.64,   3.32,   0.00,   },
        };

        private static readonly string alphabet = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя ";

        /// <summary>
        /// Считает частоту биграмм в тексте и записывает значение в переменную
        /// </summary>
        /// <param name="text"></param>
        /// <param name="frequencyOfBigrams"></param>
        /// <exception cref="ArgumentException"></exception>
        public static void FindFrequencyOfBigrams(string text, out double frequencyOfBigrams, int bigramsType = 1)
        {
            frequencyOfBigrams = 0;
            if (text is null || text.Length < 3) throw new ArgumentException("Текст не может быть пустым или меньше 3 символов");

            string alphabet;
            List<double[]> bigrams;
            if(bigramsType == 1)
            {
                alphabet = FrequencyOfBigrams.alphabet;
                bigrams = myBigrams;
            }
            else
            {
                alphabet = FrequencyOfBigrams.alphabet;
                bigrams = dostoevskyBigrams;
            }

            string Aij = text[0].ToString() + text[1];

            Aij = Aij.ToLower();

            if (alphabet.Contains(Aij[0]) && alphabet.Contains(Aij[1]))
            {
                frequencyOfBigrams += bigrams[alphabet.IndexOf(Aij[0])][alphabet.IndexOf(Aij[1])];
            }

            for (int i = 2; i < text.Length; i++)
            {
                Aij = Aij[1].ToString() + text[i];

                Aij = Aij.ToLower();

                if (alphabet.Contains(Aij[0]) && alphabet.Contains(Aij[1]))
                {
                    frequencyOfBigrams += bigrams[alphabet.IndexOf(Aij[0])][alphabet.IndexOf(Aij[1])];
                }
            }
        }
    }
}
